package org.usmile.algorithms.leetcode.simple;

/**
 * 643. 子数组最大平均数 I
 *
 * 给你一个由 n 个元素组成的整数数组 nums 和一个整数 k 。
 * 请你找出平均数最大且 长度为 k 的连续子数组，并输出该最大平均数。
 * 任何误差小于 10-5 的答案都将被视为正确答案。
 *
 * 示例 1：
 * 输入：nums = [1,12,-5,-6,50,3], k = 4
 * 输出：12.75
 * 解释：最大平均数 (12-5-6+50)/4 = 51/4 = 12.75
 *
 * 示例 2：
 * 输入：nums = [5], k = 1
 * 输出：5.00000
 *
 * 提示：
 * n == nums.length
 * 1 <= k <= n <= 105
 * -104 <= nums[i] <= 104
 */
public class _0643 {
    public static void main(String[] args) {
        System.out.println(new _0643_Solution().findMaxAverage(new int[]{-1}, 1));
    }
}

class _0643_Solution {
    public double findMaxAverage(int[] nums, int k) {
        int left = 0;
        int right = 0;
        int maxSum = Integer.MIN_VALUE;
        int curr = 0;
        while (right < nums.length) {
            curr += nums[right];
            if (right - left + 1 == k) {
                maxSum = Math.max(maxSum, curr);
                curr -= nums[left];
                left++;
            }
            right++;
        }

        return (double)maxSum / k;
    }
}